﻿using PMatch;

namespace Exp1
{
	class Program
	{
		static void Main(string[] args)
		{
			ExpProto ex;

			ex = new ExpTwoModelsErgodic();
			ex.Run("Results-TwoModels-Ergodic.csv");

			ex = new ExpTwoModelsForward();
			ex.Run("Results-TwoModels-Forward.csv");

			ex = new ExpOneModelPos();
			ex.Run("Results-OneModelPos.csv");

			ex = new ExpOneModelNeg();
			ex.Run("Results-OneModelNeg.csv");
		}
	}

	public class ExpTwoModelsErgodic : ExpProto
	{
		protected override IMarkovModel GetModel(ExpUnit x)
		{
			return new MarkovModel(x.States, x.Rtol, HMMType.Ergodic);
		}
	}

	public class ExpTwoModelsForward : ExpProto
	{
		protected override IMarkovModel GetModel(ExpUnit x)
		{
			return new MarkovModel(x.States, x.Rtol, HMMType.Forward);
		}
	}

	public class ExpOneModelPos : ExpProto
	{
		protected override IMarkovModel GetModel(ExpUnit x)
		{
			return new MarkovModel2(x.States, x.Rtol);
		}
	}
	public class ExpOneModelNeg : ExpProto
	{
		protected override IMarkovModel GetModel(ExpUnit x)
		{
			return new MarkovModel3(x.States, x.Rtol);
		}
	}
}
